package extras.xml;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import excepciones.XMLUnserializeException;
import modelo.Auto;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

/**
 * Clase que permite crear objetos predefinidos
 * en un archivo xml. <p>Las subclases de Fabrica deben especificar
 * los m�todos para obtener los objetos, Fabrica s�lo engloba
 * las operaciones de cargar e interpretar los archivos xml
 * necesarios.</p>
 *
 */

public class FabricaXML {
	/**
	 * Directorio donde se encuentra el archivo con los 
	 * autos a crear.
	 */
	private static final String DIRECTORIO = "xml/"; 
	
	/**
	 * Documento xml con los elementos a crear.
	 */
	private Document doc; 
	
	/**
	 * Se crea la f�brica con el nombre de archivo recibido.
	 * @param archivo nombre del archivo xml
	 * @throws IOException si ocurre alg�n error al abrir el archivo 
	 * @throws JDOMException si el archivo xml no est� bien formado
	 * @throws FileNotFoundException si no existe el archivo
	 */
	protected FabricaXML(String archivo) throws FileNotFoundException, 
												  JDOMException, 
												  IOException {
		String file = DIRECTORIO + archivo;
		SAXBuilder builder = new SAXBuilder();
		doc = builder.build(new FileInputStream(file));
	}
	
	/**
	 * Devuelve el elemento del documento xml con el nombre especificado.
	 * @param nombre nombre del elemento xml buscado
	 * @return elemento del documento xml con el nombre especificado
	 */
	protected Element getElement(String nombre) {
		return doc.getRootElement().getChild(nombre);
	}
}
